{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "EMNIST Dense Classification with Class Weights",
      "provenance": [],
      "collapsed_sections": [],
      "toc_visible": true,
      "authorship_tag": "ABX9TyOQBevOascFmhSfvT3nQM7j",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/wandb/awesome-dl-projects/blob/master/ml-tutorial/EMNIST_Dense_Classification_with_Class_Weights.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LHCCGutqrj-r",
        "colab_type": "text"
      },
      "source": [
        "# Imports and Setups"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qiFYfrVpXbAP",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 391
        },
        "outputId": "9be41839-bfd4-46f0-d683-35dc04fccef8"
      },
      "source": [
        "!nvidia-smi"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Tue Aug 25 05:18:49 2020       \n",
            "+-----------------------------------------------------------------------------+\n",
            "| NVIDIA-SMI 450.57       Driver Version: 418.67       CUDA Version: 10.1     |\n",
            "|-------------------------------+----------------------+----------------------+\n",
            "| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n",
            "| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n",
            "|                               |                      |               MIG M. |\n",
            "|===============================+======================+======================|\n",
            "|   0  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |\n",
            "| N/A   55C    P8    10W /  70W |      0MiB / 15079MiB |      0%      Default |\n",
            "|                               |                      |                 ERR! |\n",
            "+-------------------------------+----------------------+----------------------+\n",
            "                                                                               \n",
            "+-----------------------------------------------------------------------------+\n",
            "| Processes:                                                                  |\n",
            "|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |\n",
            "|        ID   ID                                                   Usage      |\n",
            "|=============================================================================|\n",
            "|  No running processes found                                                 |\n",
            "+-----------------------------------------------------------------------------+\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WwZMe8Ey0LYE",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 93
        },
        "outputId": "f3cd3bc4-7a7e-44d1-c405-6cfe05c36910"
      },
      "source": [
        "import tensorflow as tf\n",
        "print(tf.__version__)\n",
        "\n",
        "from tensorflow.keras.layers import *\n",
        "from tensorflow.keras.models import *\n",
        "import tensorflow_datasets as tfds\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "%matplotlib inline\n",
        "tfds.disable_progress_bar()\n",
        "\n",
        "import seaborn as sns\n",
        "from sklearn.metrics import confusion_matrix\n",
        "from sklearn.preprocessing import normalize\n",
        "from sklearn.utils import class_weight"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "2.3.0\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
            "  import pandas.util.testing as tm\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HqUfAaLR7H4F",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "%%capture\n",
        "!pip install wandb"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3GeVDMnA7LOr",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 109
        },
        "outputId": "1e14dccc-5b4d-4dcc-f72a-0250e4eb42f8"
      },
      "source": [
        "import wandb\n",
        "from wandb.keras import WandbCallback\n",
        "\n",
        "wandb.login()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "        window._wandbApiKey = new Promise((resolve, reject) => {\n",
              "            function loadScript(url) {\n",
              "            return new Promise(function(resolve, reject) {\n",
              "                let newScript = document.createElement(\"script\");\n",
              "                newScript.onerror = reject;\n",
              "                newScript.onload = resolve;\n",
              "                document.body.appendChild(newScript);\n",
              "                newScript.src = url;\n",
              "            });\n",
              "            }\n",
              "            loadScript(\"https://cdn.jsdelivr.net/npm/postmate/build/postmate.min.js\").then(() => {\n",
              "            const iframe = document.createElement('iframe')\n",
              "            iframe.style.cssText = \"width:0;height:0;border:none\"\n",
              "            document.body.appendChild(iframe)\n",
              "            const handshake = new Postmate({\n",
              "                container: iframe,\n",
              "                url: 'https://app.wandb.ai/authorize'\n",
              "            });\n",
              "            const timeout = setTimeout(() => reject(\"Couldn't auto authenticate\"), 5000)\n",
              "            handshake.then(function(child) {\n",
              "                child.on('authorize', data => {\n",
              "                    clearTimeout(timeout)\n",
              "                    resolve(data)\n",
              "                });\n",
              "            });\n",
              "            })\n",
              "        });\n",
              "    "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[32m\u001b[41mERROR\u001b[0m Not authenticated.  Copy a key from https://app.wandb.ai/authorize\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "API Key: ··········\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "True"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M_C6x2qUrnSu",
        "colab_type": "text"
      },
      "source": [
        "# Download EMNIST and Minor Investigation\n",
        "\n",
        "Check out this [colab notebook]() for:\n",
        "* More on `EMNIST/bymerge` dataset\n",
        "* Class distribution\n",
        "\n",
        "Check out [this paper](https://arxiv.org/abs/1702.05373) for more on EMNIST."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "T7KbDzcP0iXX",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 149
        },
        "outputId": "ee5318d6-be51-4be6-cf16-82e25498bff1"
      },
      "source": [
        "# Gather EMNIST/bymerge dataset\n",
        "train_ds, validation_ds = tfds.load(\n",
        "    \"emnist/bymerge\",\n",
        "    split=[\"train[:85%]\", \"train[85%:]\"],\n",
        "    as_supervised=True\n",
        ")"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\u001b[1mDownloading and preparing dataset emnist/bymerge/3.0.0 (download: 535.73 MiB, generated: Unknown size, total: 535.73 MiB) to /root/tensorflow_datasets/emnist/bymerge/3.0.0...\u001b[0m\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings\n",
            "  InsecureRequestWarning)\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Shuffling and writing examples to /root/tensorflow_datasets/emnist/bymerge/3.0.0.incompleteEDEOBC/emnist-train.tfrecord\n",
            "Shuffling and writing examples to /root/tensorflow_datasets/emnist/bymerge/3.0.0.incompleteEDEOBC/emnist-test.tfrecord\n",
            "\u001b[1mDataset emnist downloaded and prepared to /root/tensorflow_datasets/emnist/bymerge/3.0.0. Subsequent calls will reuse this data.\u001b[0m\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QfFWriVto6G3",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 36
        },
        "outputId": "7de023a6-ca53-4db4-bc76-cce2190c0ec1"
      },
      "source": [
        "LABELS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', \n",
        "          'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n",
        "          'a', 'b', 'd', 'e', 'f', 'g', 'h', 'n', 'q', 'r', 't']\n",
        "\n",
        "print(len(LABELS))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "47\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6BNpPDFAruNE",
        "colab_type": "text"
      },
      "source": [
        "# Simple `tf.data` dataloader"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kFzES4Xa2DTA",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "## We are transposing to rotate the image by 90 deg clockwise making the images human friendly.\n",
        "def transpose_and_flatten(image, label):\n",
        "  image = tf.image.convert_image_dtype(image, dtype=tf.float32) # scale image pixels to [0,1]\n",
        "  image = tf.transpose(image, [1,0,2]) # transpose to get human friendly image, since rotation\n",
        "  image = tf.reshape(image, shape=(784,)) # permutation invariant or flatten \n",
        "  return image, label\n",
        "\n",
        "trainloader = (\n",
        "    train_ds\n",
        "    .shuffle(1024)\n",
        "    .map(transpose_and_flatten, num_parallel_calls=tf.data.experimental.AUTOTUNE)\n",
        "    .batch(32)\n",
        "    .prefetch(tf.data.experimental.AUTOTUNE)\n",
        ")\n",
        "\n",
        "testloader = (\n",
        "    validation_ds\n",
        "    .map(transpose_and_flatten, num_parallel_calls=tf.data.experimental.AUTOTUNE)\n",
        "    .batch(32)\n",
        "    .prefetch(tf.data.experimental.AUTOTUNE)\n",
        ")"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0Il96w-6sCk9",
        "colab_type": "text"
      },
      "source": [
        "#### Quick Visualization\n",
        "(Run the cell below multiple times to visualize different images.)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0ekU0Gj3kU4c",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 591
        },
        "outputId": "e1b16659-cb41-4865-8f09-009589def28a"
      },
      "source": [
        "imgs, labels = next(iter(trainloader))\n",
        "\n",
        "plt.figure(figsize=(10, 10))\n",
        "for n in range(25):\n",
        "    ax = plt.subplot(5, 5, n+1)\n",
        "    plt.imshow(tf.reshape(imgs[n], shape=(28,28)), cmap='gray')\n",
        "    plt.title(LABELS[int(labels[n])])\n",
        "    plt.axis('off')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAI+CAYAAABe7hvVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZhU1bU+/neLIiLzIMoMIioCzlEQnBAVFUTUaFRi8s1FozFqYpwijjFeJXqj1xin6y8OOMY4AM5DEJTBOKAIzgoyKzMKOOD5/QGuvHvRVWma6q6q3e/neXye1ZxN96FOnerjXnutHbIsg4iIiEhqNin2CYiIiIhUBz3kiIiISJL0kCMiIiJJ0kOOiIiIJEkPOSIiIpIkPeSIiIhIkvSQIyIiIklK7iEnhDAjhLAqhPAl/de62OclGy6EcEYI4bUQwtchhDuLfT5Sde6+XBJCeCKE0K7Y5yVVE0LoE0KYEEJYFkJYHEJ4JYSwZ7HPS6pu3T16ULHPo9CSe8hZZ2CWZQ3ov7nFPiGpkrkArgTw/xX7RKQgBmZZ1gDANgAWALixyOcjVRBCaARgDNZev2YA2gC4HMDXxTwvkYqk+pAjCciy7JEsyx4DsKjY5yKFk2XZagAPA+hW7HORKukKAFmW3Z9l2Zosy1ZlWfZslmVvF/vEpGpCCPcAaA9g9LrZ1vOKfU6FooccEalRIYT6AI4DMKnY5yJV8gGANSGEu0IIA0IITYt9QrJxsiwbCuAz/DsLMqLY51QoqT7kPBZCWLruv8eKfTIiAmDdfQlgGYD+AP5U5PORKsiybDmAPgAyALcD+CKEMCqE0Kq4ZyayvlQfcgZnWdZk3X+Di30yIgJg3X0JoB6AMwC8FELYusjnJFWQZdm7WZb9LMuytgC6A2gN4Poin5bIelJ9yBGRErVuHccjANZg7YyAlLEsy94DcCfWPuxI+cqKfQLVQQ85UrJCCJuGEOoBqAOgTgihXghh02Kfl2ycsNaRAJoCeLfY5yMbJoSwQwjhnBBC23VftwPwE2iNVblbAKBzsU+i0PSQI6VsOIBVAC4AcNK6eHhRz0g2xugQwpcAlgP4I4CTsyybVuRzkg23AsBeACaHEL7C2oebdwCcU9Szko313wCGr1vL+rtin0yhhCxLcoZKREREajnN5IiIiEiS9JAjIiIiSdJDjoiIiCRJDzkiIiKSJD3kiIiISJLy9hwJIaj0qgiyLAvV8X11PYujOq6nrmVx6N5Mi+7NdOS6lprJERERkSTpIUdERESSpBb5UjI22SR+5g7h37OPa9asqenTERGRMqeZHBEREUmSHnJEREQkSXrIERERkSRpTY4UVb169Szu379/dKxz584WP/744xbPmDGj2s9LRGoOr8fjtXie1ubJhtJMjoiIiCRJDzkiIiKSpGpPV/HUY5al0Qhyiy22iL4+7LDDLL7wwgujYw0bNrT4+++/t7hv377RuIULFxbyFMtGv379LL722mujY61atbKYp7NvvPHGaNx3331XTWcnKfEtCvhrvYeqH39u8uciAOyzzz4Wd+jQIef3eOyxxyxesGBBdGzVqlUbe4qSIM3kiIiISJL0kCMiIiJJKni6qk6dOtHXF110kcUjRoywePXq1YX+0ZU+p1//+tcW33fffRYvWbIkGnfooYdavMcee1h84oknRuN4enXRokXRsZEjR1q8YsUKizl1VZttttlmFjdp0iQ6Vr9+/QqP5au+kNqtRYsW0decFvb37U477WTx+eefb/GoUaOq6ezS5+/NunXrWrzddttZ3LVr12jccccdZ3HHjh0t9p+TX3zxhcWTJk2Kjn3yyScWp7I0QjaeZnJEREQkSXrIERERkSTpIUdERESSFPLlLkMIG5zYPOKII6Kvb7vtNov33HNPi+fMmbOh33qDcHko59sB4Morr7SY19D4NTnt2rWzmNfTjB8/Phr3yiuvWHzvvfdGxz7//PMNOW0AQJZl1bLopCrXs7p16dLF4ieeeCLnsTfeeMPiY489NhpX6h2Qq+N6luK1LBbujP3ss89Gxxo0aGDxsmXLomPNmze3eOnSpRbvvffe0Thu71Cb7s3K4nU43MEcALbZZhuLhw4danGPHj2icbx2iq+ZX5PDJeRPP/10dOzhhx+2+Ouvv67UuevejPHvTV5PBcT32bx58yz2vzeLJde11EyOiIiIJEkPOSIiIpKkgpeQ+26VjRs3tphLCKs7XdW9e3eLjzrqqOgYT8nx1KhPQ91yyy0WcxrKdydWOXj14GnwRo0aWbzpptpXtrbZfPPNo685pXT//fdbPHny5GjcOeecY/Hs2bOjY9dcc43Fp5xyisX8mQDU3m7k+XBbjk6dOlnsU32HHHKIxUOGDLHY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d4v2aShOcbz44osW87QpEFfkSPFw2oivHQDcfvvtFufrZMzXltOXfiNPTpdwdUj//v2jcZzyfPzxx/P/AyQnn67ia8hVkT169IjG7bLLLhYPGTLE4q233joax9WTvBmyT4v89Kc/tZhTnf/617+icb///e8tXrx4cXSsNi5D4PuH7wlg/WqrH/jPWU5LpkgzOSIiIpIkPeSIiIhIkvSQIyIiIkkqmTU5vHvw//7v/0bHFi5caPGxxx5rsdbglC7Oj48fPz46dtVVV1n83HPPWezXe/BaEM7h18bce03KVyZ+8803R8d4XcShhx5qcb7OwxdccEGlzoO76k6cODE6Nnz4cIufeOIJi303V9kwfJ9xl3deKwXEJf18n+60007ROO6CzSXkDRo0iMY1b97cYr7uvuMx/z2/tqQ2fi7w78BRo0ZFx3j9UosWLSz2LT0+++yzajq70qCZHBEREUmSHnJEREQkSUVLV2211VbR17yhH3c/BoBzzjnHYm3AV3443QgAt9xyi8W8yWq+bps8Ne1LHmvjNHWhccrhkksuiY6df/75FvsUwamnnmrxW2+9VdBz4q7Zd999d3SMuyZzek3pqsLhNhCff/55dIw7D3O6o02bNtE47sJ77rnnWty9e/doHG+4yvh9KfnxJqdAnErmdJUv8+dNr6dPn26xTxWW672lmRwRERFJkh5yREREJEk1mq7iNNStt94aHeNV+O+991507KGHHqreE5MaxRUBlZ2O5jQJT6kCSldVVa5OxlyVAcRdcIcNGxYdq6luw1xBBQBXXHGFxZwiUTq7cPyyAcbvHa6M6tq1azSOu1a3a9fOYt/NfPXq1Rbzppw+Nc1VXrrvY77a+O2337aYf7/6155TzrwRMlfXAcBLL71kMX8Gc1oTAOrWrWsxd7z238+nw6qLZnJEREQkSXrIERERkSTpIUdERESSVO1rcri8k/P+gwYNisZx+enPfvaz6FhN5e6kPKjTdX5clt+sWTOLuSQbAH7zm99YfNFFF1nsS/kvvPBCi2tyx29e93H88cdHx/zu5RJfd5Zv7Ypfd8Of161atco5jl//Xr16Wbz//vtH43i3cm4b4s+Vy9AnTZpk8fPPPx+NW7FihcVakxPzr8fIkSMt7tKli8U77rhjNI7Ly88880yL/e/defPmWXzPPfdY7NfLcddrXu/jO9rPmDFj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Rw+Ld9lll5x/Z9y4cdHXU6dOtdinsjaW/2xlpVY5p5kcERERSZIeckRERCRJesgRERGRJNXomhzO63bq1Ck69ve//91izkECwMSJEy3mjse8dqKqODd8+eWXR8d4zc91111n8dFHHx2Nu+aaayx+8skno2PaIblmbbLJv5/bmzVrFh3r1auXxWeddZbFfv3IW2+9ZfHtt98eHePcdqqdr30ZML/feQ0OEN+D/PeuuuqqaFz37t0t5rVR/rV/+eWXLea1b7/4xS+icbyWZ9KkSRanek1qCq+14OvUuHHjaFzfvn0t5mvL6yeBuOSZr9miRYuicfyZ/+abb1o8d+7caNzSpUstTula57vnjjvuOIt32GGHaNySJUss9vcSd/+uypocv16O3wM9e/a02P+O4/uR1zsWa62OZnJEREQkSXrIERERkSRVe7qKU1QXXHCBxWeccUY0jjfg8xtl/upXv7J45cqVhT7FnLiTMZ97q1atonFcYivFxekqv6lj165dLeZSTF9C3rp1a4tHjx4dHasN5eU8PQ7EXca5CzEQT0HvvPPOFq9atSoa9+KLL1p85513Wuy7h/Nr+sYbb1jsy8Q5pfGHP/zB4pRSGDXBlwJ37tzZ4r333tvigw46KBrHywb4PvPd6nPhEnT/Nae47rvvvmjcsmXLKvX9ywG/9j41xGX53Nk/X2r9vffei45xx+Oq4DJ2IE5RcVrS/07mNNm8efMs9p+zNUUzOSIiIpIkPeSIiIhIkqo9XcVT3RdddJHFvIEmABx66KEWc1djoGY3bMuFU1RdunSJjtWWLpzlgKsUfLqKO65y+sOnQnga2V9r7sL7zTffWFzuaRJOM/zud7+LjnXs2NFin97g9BVPpfuqtL/97W8W83T2ZpttFo3j6q02bdpY7KfEubO4r8CR/Pga+vQSp6j4M5n/HIg7hnOKOB++R/w1e/vtty3+17/+ZbFPuZRaN92NwdVrfgkEp9Z5c9tXX301GvfEE09YzB2Ogaqlq/ha+irnI444wuKDDz7YYl/lzJvz8jGlq0REREQKSA85IiIikiQ95IiIiEiSarTj8aeffmqx74jKOdlSzLvut99+Fvv86ezZs2v6dCQHXmPA6wb815x79msKttxyS4t5HY///vl24i0HfP7bb799hbEf5+9NXhPAZeL3339/NI7bMfD38x1ceT0Qr696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vI4AiPP+O+ywg8U+n89fc/kjd3EE4k6O+XLBvIPujTfeGB1LbU0O7467zz77WOzLxI8++miL/XXi159fE16PAcTlwPyzcq2pAvLvSM058FGjRlnsOy3z13xtgbR2suZutz169LDYr8lh/rXntTe89urss8+Oxm2//fYW8/vBv57cxoHXV82aNSsaxx13Dz/8cItbtGgRjeNy6aFDh0bH3njjDYufeOIJi8v1PuUy73HjxlX450C8DsqvteEuwqtWrSr0KZqU19pUFr/3S+Xfz/e3X39XrtL4V4iIiIg4esgRERGRJJVduorLVI877rjo2DXXXGOxT5EwnibkDfy42ycATJgwocK/43E5pS9bLnd+A0XeKPGggw6y2JeJcydj/9qtXr3aYu766cfxtebX2HdX5mvNKUe/WSp3hOV/F28ICMQpDj/Vz+debqkrn2ri14NbH/DGmB5fVwDYa6+9LOaUVJcuXaJxfI14ap475wJxWoq7uU6aNCka98EHH1i86667Wty8efNoHP+bW7VqFR3jc+Sp+VJJHWwoboXAJdr+NeZ0lb+e3MaBU7U+rVVu7/1SxJ9V+e65msSpar+JarneI5rJERERkSTpIUdERESSpIccERERSVJZrMnhXGD//v0t9rslt2zZssK/71uQc675/PPPt9ivp0m51Xs+vF7Fr3E46aSTLO7bt2/OcZ999pnFXO4LAOPHj7eY113468TXk9cbdOzYMRrHu5rzugv/fuCW6D179rSY15IAQJ8+fSz2ueeJEydWeO7lwF8jLvPma+nXPDG/fQd/D/57fq3HwoULLeb77MEHH4zGcVk3bzng2/7zteRSeN6qAYjbEvh1erz+hNdHlOsO9XzevJZs9OjR0bhu3bpZ7K/nDTfcYPGIESMs9muiPv30U4tryzYohbbddttZzL/XgPj9XZPrX3i91i677BId49/D3OrB7wxfavePZnJEREQkSXrIERERkSSVRbqKp5m5C65PW3C5KE+nPfPMM9G4v/3tbxaPGTPGYk27rsWvN5cZA0DXrl0tzlf2+Pbbb1vMrzEAvPjiixb7XZBznQeXrPq0Cx/jEvdDDjkk5/fLtQM3EKcx/DQyd+HllFw5lFT6TsZc9u93A8/F74LMXcEZv04AcOutt1p80003WfzFF19E4yp7D/KUOKdSfFqL/83+3Pfbbz+LOc1Z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d9y4cRb7VhL+O6UQ1XJvyoHLdS01kyMiIiJJ0kOOiIiIJEkPOSIiIpKkkqzJYT169Ihecwt/LkX15W68+ynnZ4Hicq21rJry/r6s+/7777d44MCBFnNZ+N6/y2K/noJ3jZ46darFvIswAOzYsaOpp1uVqjXvz9eId4O/8847o+NOPvlkixsaGnL+PC7v3b17dzTGa7l+//vfW8xl7ED1twOopnuzFvD2LoMHD7b4mmuuiY7jFgPcToQ/HwBgypQpFvud6YtRrfemNJ3W5IiIiEhd0UOOiIiIJKnk6SqPS0nbtGljsU9B1VtKKp9qnhLv1KmTxaeffrrFfpdiTnNt27YtGuNOquvWrbM41fYAtTYl7lsDcDdk38mYcQfaDz74IBrj11u2bLG41jqsVvO9We241Lxr167RGC9r4LLxefPmRceVOoVda/em5KZ0lYiIiNQVPeSIiIhIksqerpKmq5UpcU5J+SqsfHwX09SlNCXO3c29eriutXJv1ppcnx/lTmemdG/WO6WrREREpK7oIUdERESSpIccERERSVLuBLvIF+B8ea2VAktx6mHdjTQ/fX5IuWgmR0RERJKkhxwRERFJUt4SchEREZFapZkcERERSZIeckRERCRJesgRERGRJOkhR0RERJKkhxwRERFJkh5yREREJEn/DyeR7F/1m0kpAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 720x720 with 25 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dunhN6lbmjjy",
        "colab_type": "text"
      },
      "source": [
        "# Simple classifier"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YMkuvJKTm9dx",
        "colab_type": "text"
      },
      "source": [
        "#### Build Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "d5l1tnXhmmxH",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def DenseModel():\n",
        "  inputs = Input(shape=(784,))\n",
        "  x = Dense(1000, activation='relu')(inputs)\n",
        "  x = Dense(500, activation='relu')(x)\n",
        "  x = Dense(100, activation='relu')(x)\n",
        "  outputs = Dense(len(LABELS), activation='softmax')(x)\n",
        "\n",
        "  return Model(inputs=inputs, outputs=outputs)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xwR4wZ99SPcP",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 354
        },
        "outputId": "5a739b83-763a-48e3-e960-667da4b70b91"
      },
      "source": [
        "tf.keras.backend.clear_session()\n",
        "model = DenseModel()\n",
        "model.summary()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"functional_1\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "input_1 (InputLayer)         [(None, 784)]             0         \n",
            "_________________________________________________________________\n",
            "dense (Dense)                (None, 1000)              785000    \n",
            "_________________________________________________________________\n",
            "dense_1 (Dense)              (None, 500)               500500    \n",
            "_________________________________________________________________\n",
            "dense_2 (Dense)              (None, 100)               50100     \n",
            "_________________________________________________________________\n",
            "dense_3 (Dense)              (None, 47)                4747      \n",
            "=================================================================\n",
            "Total params: 1,340,347\n",
            "Trainable params: 1,340,347\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JxGdeZ_t6guC",
        "colab_type": "text"
      },
      "source": [
        "#### Callback"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JcglLPpt6jCk",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "early_stopper = tf.keras.callbacks.EarlyStopping(\n",
        "    monitor='val_loss', patience=5, verbose=0, mode='auto', restore_best_weights=True\n",
        ")"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "uVLaA5aYGPwT",
        "colab_type": "text"
      },
      "source": [
        "#### Compute class weights"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "i9wiogNQGPag",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def get_training_labels(dataloader):\n",
        "    y_train = []\n",
        "    for _, label in dataloader:\n",
        "        y_train.extend(label.numpy())\n",
        "    \n",
        "    return y_train\n",
        "\n",
        "y_train = get_training_labels(trainloader)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YtOjNHQAHztI",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "cls_wt = class_weight.compute_class_weight('balanced', \n",
        "                                           np.unique(y_train), \n",
        "                                           y_train)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M8qfQ9lmIokw",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 896
        },
        "outputId": "3b6cbf3d-50cc-49c8-fdc6-af0177accde7"
      },
      "source": [
        "class_weights = dict(zip(np.unique(y_train), cls_wt))\n",
        "class_weights"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{0: 0.4287421947271045,\n",
              " 1: 0.3880998128329477,\n",
              " 2: 0.43232532582428956,\n",
              " 3: 0.42194859305896765,\n",
              " 4: 0.4422314558463302,\n",
              " 5: 0.47467828260561684,\n",
              " 6: 0.43442334237707647,\n",
              " 7: 0.41178944971832043,\n",
              " 8: 0.43814809125124815,\n",
              " 9: 0.43807205819477174,\n",
              " 10: 2.307948475546893,\n",
              " 11: 3.835360137577015,\n",
              " 12: 1.1440379056254832,\n",
              " 13: 3.196295318502395,\n",
              " 14: 3.0074267840757583,\n",
              " 15: 1.6354198254425962,\n",
              " 16: 5.887206255954271,\n",
              " 17: 4.795657375670957,\n",
              " 18: 1.0097736170212765,\n",
              " 19: 2.5912893066651526,\n",
              " 20: 2.9511737696436655,\n",
              " 21: 0.7283842237155034,\n",
              " 22: 1.2772890318524548,\n",
              " 23: 1.8075569544273173,\n",
              " 24: 0.5379835569331667,\n",
              " 25: 1.3865945526492318,\n",
              " 26: 5.688224521300567,\n",
              " 27: 2.934023759359823,\n",
              " 28: 0.6285002346644405,\n",
              " 29: 1.523864567519734,\n",
              " 30: 0.9672902301146415,\n",
              " 31: 1.9548041215372398,\n",
              " 32: 2.023432223912465,\n",
              " 33: 2.652273631596125,\n",
              " 34: 2.074990993385822,\n",
              " 35: 2.733254701768289,\n",
              " 36: 1.4832162412180914,\n",
              " 37: 2.9211224746044797,\n",
              " 38: 1.4608993301812452,\n",
              " 39: 0.6034984562642103,\n",
              " 40: 5.849013073570879,\n",
              " 41: 4.026210594183718,\n",
              " 42: 1.7077757019031197,\n",
              " 43: 1.3009864164879363,\n",
              " 44: 5.006810873766742,\n",
              " 45: 1.0544837270481167,\n",
              " 46: 0.8135986987731054}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 21
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ScKH6S3HUhcu",
        "colab_type": "text"
      },
      "source": [
        "#### Train"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "GSpEIbopSVQm",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 519
        },
        "outputId": "2c8eb0cc-f18e-4519-e5d4-3f045813b8f3"
      },
      "source": [
        "# initialize wandb run\n",
        "wandb.init(entity='iit-bhu', project='emnist-classification')\n",
        "\n",
        "# hyperparameters\n",
        "config = wandb.config\n",
        "config.epochs = 70\n",
        "config.learning_rate = 0.001\n",
        "\n",
        "# model\n",
        "tf.keras.backend.clear_session()\n",
        "model = DenseModel()\n",
        "\n",
        "# optimizer\n",
        "optimizer = tf.keras.optimizers.Adam(learning_rate=config.learning_rate)\n",
        "\n",
        "# compile\n",
        "model.compile(optimizer, 'sparse_categorical_crossentropy', metrics=['acc'])\n",
        "\n",
        "# train\n",
        "model.fit(trainloader,\n",
        "          epochs=config.epochs,\n",
        "          class_weight=class_weights,\n",
        "          validation_data=testloader,\n",
        "          callbacks=[WandbCallback(),\n",
        "                     early_stopper])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "\n",
              "                Logging results to <a href=\"https://wandb.com\" target=\"_blank\">Weights & Biases</a> <a href=\"https://docs.wandb.com/integrations/jupyter.html\" target=\"_blank\">(Documentation)</a>.<br/>\n",
              "                Project page: <a href=\"https://app.wandb.ai/wandb/emnist-classification\" target=\"_blank\">https://app.wandb.ai/wandb/emnist-classification</a><br/>\n",
              "                Run page: <a href=\"https://app.wandb.ai/wandb/emnist-classification/runs/9cw8o7oy\" target=\"_blank\">https://app.wandb.ai/wandb/emnist-classification/runs/9cw8o7oy</a><br/>\n",
              "            "
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "Epoch 1/70\n",
            "18539/18539 [==============================] - 142s 8ms/step - loss: 0.6511 - acc: 0.7871 - val_loss: 0.4994 - val_acc: 0.8281\n",
            "Epoch 2/70\n",
            "18539/18539 [==============================] - 139s 7ms/step - loss: 0.4762 - acc: 0.8316 - val_loss: 0.4838 - val_acc: 0.8358\n",
            "Epoch 3/70\n",
            "18539/18539 [==============================] - 136s 7ms/step - loss: 0.4449 - acc: 0.8402 - val_loss: 0.4837 - val_acc: 0.8376\n",
            "Epoch 4/70\n",
            "18539/18539 [==============================] - 133s 7ms/step - loss: 0.4285 - acc: 0.8445 - val_loss: 0.4893 - val_acc: 0.8399\n",
            "Epoch 5/70\n",
            "18539/18539 [==============================] - 138s 7ms/step - loss: 0.4180 - acc: 0.8473 - val_loss: 0.5157 - val_acc: 0.8346\n",
            "Epoch 6/70\n",
            "18539/18539 [==============================] - 136s 7ms/step - loss: 0.4142 - acc: 0.8486 - val_loss: 0.4717 - val_acc: 0.8470\n",
            "Epoch 7/70\n",
            "18539/18539 [==============================] - 135s 7ms/step - loss: 0.4080 - acc: 0.8498 - val_loss: 0.5261 - val_acc: 0.8356\n",
            "Epoch 8/70\n",
            "18539/18539 [==============================] - 133s 7ms/step - loss: 0.4063 - acc: 0.8499 - val_loss: 0.5121 - val_acc: 0.8479\n",
            "Epoch 9/70\n",
            "18539/18539 [==============================] - 132s 7ms/step - loss: 0.4010 - acc: 0.8507 - val_loss: 0.5143 - val_acc: 0.8416\n",
            "Epoch 10/70\n",
            "18539/18539 [==============================] - 136s 7ms/step - loss: 0.4017 - acc: 0.8517 - val_loss: 0.5482 - val_acc: 0.8384\n",
            "Epoch 11/70\n",
            "18539/18539 [==============================] - 137s 7ms/step - loss: 0.4031 - acc: 0.8529 - val_loss: 0.5203 - val_acc: 0.8465\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<tensorflow.python.keras.callbacks.History at 0x7fe63d24bcc0>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 23
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "H2yBpJ82hniM",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model.save('emnist_dense.h5')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5qbue1HNkX4-",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def plot_confusion_matrix():\n",
        "  y_test = []\n",
        "  y_preds = []\n",
        "  for imgs, labels in testloader:\n",
        "      y_test.extend(labels.numpy())\n",
        "      y_pred = model.predict(imgs)\n",
        "      y_preds.extend(np.argmax(y_pred, axis=1))\n",
        "\n",
        "  cm = confusion_matrix(y_true = y_test, y_pred = y_preds)\n",
        "  cm_normalize = normalize(cm, axis=1)\n",
        "\n",
        "  fig = plt.figure(figsize=(15,15));\n",
        "  sns.heatmap(cm_normalize, annot=False, xticklabels=LABELS, yticklabels=LABELS, linewidths=.1);\n",
        "  plt.show()\n",
        "\n",
        "  return fig"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wx6kPmjXv6F6",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 863
        },
        "outputId": "f12b20b2-e0a3-43b1-d52e-2bb25afa63df"
      },
      "source": [
        "fig = plot_confusion_matrix()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1080x1080 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "aJnMAomxPfIC",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}